﻿/*
 * Created by SharpDevelop.
 * User: CeCi
 * Date: 02/04/2014
 * Time: 03:15 p.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Data;
using System.Collections.Generic;
using System.Runtime.Remoting.Messaging;

namespace Gestión_UTN.blimpl
{
	/// <summary>
	/// Description of carrerablimpl.
	/// </summary>
	public class carrerablimpl:Gestión_UTN.bl.carrerabl
	{
		private static Gestión_UTN.da.carrerada createCarrera = Gestión_UTN.factories.dafactory.createCarrera();
		private static Gestión_UTN.bl.materiabl createMateria = Gestión_UTN.factories.blfactory.createMateria();
		
		public carrerablimpl()
		{
		}
		
		public bool SaveCarrera(string nombre)
		{
			bool ingresada = true;
			
			try 
			{
				ingresada = (!nombre.Equals("")) ?
					createCarrera.SaveCarrera(nombre)
					: false;
			} 
			catch (Exception) 
			{
				ingresada = false;
			}
			
			return ingresada;
		}
		
		public bool DeleteCarrera(string nombre)
		{
			bool eliminada = false;
			
			try 
			{
				eliminada = (!nombre.Equals(""))
					? createCarrera.DeleteCarrera(nombre)
					: false;
			} 
			catch (Exception) 
			{
				eliminada = false;
			}
			
			return eliminada;
		}
		
		public bool ModifyCarrera(string nombre_anterior, string nombre)
		{
			bool modificada = false;
			
			try 
			{
				modificada = (!nombre.Equals("") && !nombre_anterior.Equals(""))
					? createCarrera.ModifyCarrera(nombre_anterior,nombre)
					: false;
			} 
			catch (Exception) 
			{
				modificada = false;
			}
			
			return modificada;
		}
		
		public System.Data.DataTable FindAllCarreras()
		{
			DataTable tablaCarreras = null;
			
			try 
			{
				tablaCarreras = createCarrera.FindAllCarreras();
			} 
			catch (Exception) 
			{
				tablaCarreras = null;
			}
			
			return tablaCarreras;
		}
		
		public Gestión_UTN.bo.Carrerabo FindCarreraByNombre(string nombre)
		{
			Gestión_UTN.bo.Carrerabo carrera = null;
			
			try 
			{
				Gestión_UTN.Entities.Carrera car = createCarrera.FindCarreraByNombre(nombre);
				
				DataTable tm = createMateria.FindAllMaterias();
				
				DataRow[] mats = (null != tm)
					? tm.Select("car_id = " + car.Car_id) : null;
				
				if (null != mats) 
				{
					List<String> materias = new List<string>();
					
					foreach (DataRow dr in mats) 
					{
						materias.Add(dr["mat_nombre"].ToString());
					}
					
					carrera = new Gestión_UTN.bo.Carrerabo(car.Car_id,
					                                       car.Nombre,materias);
				}
			}
			catch (Exception)
			{
				carrera = null;
			}
			
			return carrera;
		}
		
		public Gestión_UTN.bo.Carrerabo FindCarreraById(int id)
		{
			Gestión_UTN.bo.Carrerabo carrera = null;
			
			try 
			{
				Gestión_UTN.Entities.Carrera car = createCarrera.FindCarreraById(id);
				
				DataTable tm = createMateria.FindAllMaterias();
				
				DataRow[] mats = (null != tm)
					? tm.Select("car_id = " + car.Car_id) : null;
				
				if (null != mats) 
				{
					List<String> materias = new List<string>();
					
					foreach (DataRow dr in mats) 
					{
						materias.Add(dr["mat_nombre"].ToString());
					}
					
					carrera = new Gestión_UTN.bo.Carrerabo(car.Car_id,
					                                       car.Nombre,materias);
				}
			}
			catch (Exception)
			{
				carrera = null;
			}
			
			return carrera;
		}
	}
}
